package T11_20;

public class T17 {
    public int firstMissingPositive(int[] nums) {
        /*
         * 思路：1 先将数组中的元素按照nums[i]-1放在i位置上
         * 2 如果不符合(元素小于0，元素值大于数组长度)的元素就跳过*/
        for (int i = 0; i < nums.length; i++) {
            while (nums[i]>0&&nums[i]-1!=i&&nums[i]<nums.length){
                swap(nums,nums[i]-1,i);
            }
        }
        for (int i = 0; i < nums.length; i++) {
            if (nums[i]!=i+1)
                return i+1;
        }
        return nums.length+1;

    }
    //换位
    private void swap(int[] nums,int i,int j){
        int temp=nums[i];
        nums[i]=nums[j];
        nums[j]=temp;
    }
}
